08. 反向传播算法:示例(第一部分)

反向传播算法:示例(第一部分)

现在我们继续学习反向传播算法过程示例,思考一个网络包含两个输入[x_1, x_2],包含三个神经元的单个隐藏层[h_1, h_2, h_3]和单个输出y

待更新的权重矩阵是W^1连接了输入和隐藏层,并且W^2 连接了隐藏层和输出。请注意在我们例子中W^2 是一个向量,而不是矩阵,因为我们只有一个输出。

10 反向传播算法示例 A V3 最后一节

权重更新过程的思路如下:

为了更新权重,我们需要网络的误差。为了找到网络误差,我们需要网络输出,并找到网络输出,我们需要隐藏层的数值,即向量\bar {h}

\bar{h}=[h_1, h_2, h_3]

方程式 8

通过输入向量及其对应权重矩阵 W^1的简单线性组合,然后使用激活函数,计算向量\bar {h}每个要素。

_方程式9_

方程式9

现在我们需要找到这个网络的输出,y。通过向量\bar{h}及其对应权重向量W^2的线性组合,以类似的方式计算得出y

_方程式10_

方程式10

计算输出后,最后我们可以得到网络误差。

提醒一下,最常用的两个误差函数是平方误差(MSE)(通常用于回归问题)和交叉熵(通常用于分类问题)。

在这个示例中,我们使用平方误差的变体:

E=\frac{(d-y)^2}{2}

其中 d 是理想输出,而y 是计算得到的输出。请注意,因为我们只有单个输出,yd在这种例子中不是向量。

误差即他们的平方差E=(d-y)^2,又称这个网络的损失函数。我们把误差项除以 2 以简化符号。

反向传播算法过程的目的在于使用损失函数来最小化误差。为此,我们需要计算所有权重的偏导数。

由于我们刚刚找到了输出 y,现在我们可以通过找到更新后的数值\Delta W_{ij}^k,最小化误差。
上标 k 表示我们需要更新每个 k 层。

正如我们前面所说,权重更新值\Delta W_{ij}^k使用梯度进行计算,具体如下:

\Delta W_{ij}^k=\alpha (-\frac{\partial E}{\partial W})

因此:

\Delta W_{ij}^k=\alpha (-\frac{\partial E}{\partial W})=-\frac{\alpha}{2} \frac{\partial (d-y)^2}{\partial W_{ij}}=-2 \frac{\alpha}{2} \frac{\partial (d-y)}{\partial W_{ij}}

可以简化为:

\Delta W_{ij}^k=\alpha(d-y) \frac{\partial y}{\partial W_{ij}}

方程式11

(请注意d是一个常数值,所以它的偏导数就是零)

每个权重相关的输出偏导数,定义了梯度,通常由希腊字母\delta表示。

_方程式12_

方程式12

我们将使用链式法则得到梯度的所有要素。

如果你对链式法则有把握,了解如何应用,请跳到下一个视频,继续学习我们的示例。如果没有,你需要跟随 Luis 学习几分钟,他会带你学习这个过程!

Regra da cadeia